// Copyright (C) 2023 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<北京小羊驼科技有限公司>，授权编号：<NT231212144350>，代码指纹：<A.702363430.550>，技术对接人微信：<ID: wxid_wbyootvkdcgj22>】
// 【授权寄送：<收件：苏先生、地址：北京市大兴区北京密码西区6号楼1单元301、电话：18613885610、邮箱：bd@huiyuanxiang-inc.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.x52im.rainbowchat.http.logic.dto;

/**
 * 群组信息封装类。
 * <p>
 * 本类中的大部分字段意义与数据字典中“群基本信息/group_base”表保持一致。
 * 
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @since 4.3 
 */
public class GroupEntity implements java.io.Serializable
{
	/** 
	 * BBS聊天（即世界频道）所对应的群组聊天id（因为世界频道是个特殊
	 * 的群聊，属系统默认无需创建，所以给它一个默认的固定id，以便跟普
	 * 通群聊区分开来）. */
	public final static String DEFAULT_GROUP_ID_FOR_BBS = "-1";
	
	/** 群id */
	protected String g_id;
	/** 群状态 */
	protected String g_status;
	/** 群名字 */
	protected String g_name;
	/** 群主uid */
	protected String g_owner_user_uid;
	/** 群公告 */
	protected String g_notice;
	/** 最大群员数 */
	protected String max_member_count;
	/** 当前群员数 */
	protected String g_member_count;
	/** 群创建者昵称 @since 4.5 */
	protected String create_user_name;
	/** 群创建时间 */
	protected String create_time;
	
	/** 群主昵称 */
	protected String g_owner_name;      // 注：本字段非“群基本信息/group_base”表中的字段
	/** "我"在本群中的昵称（本字段只在针对”我“的群组信息查询时才有意义） */
	protected String nickname_ingroup;  // 注：本字段非“群基本信息/group_base”表中的字段
	/** ”我“是否在此群里（存在则返回1，不存在则返回0，返回-1表示不需要查询此值）*/
	protected String imIsInGroup;       // 注：本字段非“群基本信息/group_base”表中的字段
	
	/** 群公告更新时间 */
	protected String g_notice_updatetime;
	/** 群公告更新者 */
	protected String g_notice_updateuid;
	/** 群公告更新者昵称 */
	protected String g_notice_updatenick;// 注：本字段非“群基本信息/group_base”表中的字段
	
//	/** 群组收到新消息是否提示（默认true）。本字段仅用于客户UI时，与服务端无关！ */
//	protected transient boolean groupMsgToneOpen = true;

	/** 群头像最近一次更新时间戳（详细含义请见Android端相关代码）。本字段仅用于Android客户端UI时，与服务端无关！ */
	protected transient long groupImageUpdateTimestamp = 0;

	/**
	 * 使用新的对象内容来更新旧对象，从而保证旧对象内容的更新但保持旧对象的存在。
	 * 
	 * @param newGe 新的对象
	 */
	public void update(GroupEntity newGe)
	{
		if(newGe != null)
		{
			this.g_id = newGe.getG_id();
			this.g_status = newGe.getG_status();
			this.g_name = newGe.getG_name();
			this.g_owner_user_uid = newGe.getG_owner_user_uid();
			this.g_notice = newGe.getG_notice();
			this.max_member_count = newGe.getMax_member_count();
			this.g_member_count = newGe.getG_member_count();
			this.g_owner_name = newGe.getG_owner_name();
			this.nickname_ingroup = newGe.getNickname_ingroup();
			
			this.g_notice_updatetime = newGe.getG_notice_updatetime();
			this.g_notice_updateuid = newGe.getG_notice_updateuid();
			this.g_notice_updatenick = newGe.getG_notice_updatenick();
		}
	}
	
	public String getG_id()
	{
		return g_id;
	}

	public void setG_id(String g_id)
	{
		this.g_id = g_id;
	}

	public String getG_status()
	{
		return g_status;
	}

	public void setG_status(String g_status)
	{
		this.g_status = g_status;
	}

	public String getG_name()
	{
		return g_name;
	}

	public void setG_name(String g_name)
	{
		this.g_name = g_name;
	}

	public String getG_owner_user_uid()
	{
		return g_owner_user_uid;
	}

	public void setG_owner_user_uid(String g_owner_user_uid)
	{
		this.g_owner_user_uid = g_owner_user_uid;
	}

	public String getG_notice()
	{
		return g_notice;
	}

	public void setG_notice(String g_notice)
	{
		this.g_notice = g_notice;
	}

	public String getMax_member_count()
	{
		return max_member_count;
	}

	public void setMax_member_count(String max_member_count)
	{
		this.max_member_count = max_member_count;
	}

	public String getG_member_count()
	{
		return g_member_count;
	}

	public void setG_member_count(String g_member_count)
	{
		this.g_member_count = g_member_count;
	}

	public String getG_owner_name()
	{
		return g_owner_name;
	}

	public void setG_owner_name(String g_owner_name)
	{
		this.g_owner_name = g_owner_name;
	}
	
	public String getNickname_ingroup()
	{
		return nickname_ingroup;
	}

	public void setNickname_ingroup(String nickname_ingroup)
	{
		this.nickname_ingroup = nickname_ingroup;
	}
	
	public String getG_notice_updatetime()
	{
		return g_notice_updatetime;
	}

	public void setG_notice_updatetime(String g_notice_updatetime)
	{
		this.g_notice_updatetime = g_notice_updatetime;
	}

	public String getG_notice_updateuid()
	{
		return g_notice_updateuid;
	}

	public void setG_notice_updateuid(String g_notice_updateuid)
	{
		this.g_notice_updateuid = g_notice_updateuid;
	}

	public String getG_notice_updatenick()
	{
		return g_notice_updatenick;
	}

	public void setG_notice_updatenick(String g_notice_updatenick)
	{
		this.g_notice_updatenick = g_notice_updatenick;
	}
	
	public String getCreate_user_name()
	{
		return create_user_name;
	}

	public void setCreate_user_name(String create_user_name)
	{
		this.create_user_name = create_user_name;
	}

	public String getCreate_time()
	{
		return create_time;
	}

	public void setCreate_time(String create_time)
	{
		this.create_time = create_time;
	}

	public String getImIsInGroup()
	{
		return imIsInGroup;
	}

	public void setImIsInGroup(String imIsInGroup)
	{
		this.imIsInGroup = imIsInGroup;
	}
	
	/**
	 * ”我“是否在此群里.
	 *
	 * @return true表示是，否则不是
	 */
	public boolean myselfIsInGroup()
	{
		return "1".equals(this.imIsInGroup);
	}

	public long getGroupImageUpdateTimestamp() {
		return groupImageUpdateTimestamp;
	}

	public void setGroupImageUpdateTimestamp(long groupImageUpdateTimestamp) {
		this.groupImageUpdateTimestamp = groupImageUpdateTimestamp;
	}

	//	public boolean isGroupMsgToneOpen()
//	{
//		return groupMsgToneOpen;
//	}
//
//	public void setGroupMsgToneOpen(boolean groupMsgToneOpen)
//	{
//		this.groupMsgToneOpen = groupMsgToneOpen;
//	}

	/**
	 * 是否是“世界频道”（或者说是bbs聊天）。
	 * 
	 * @return true表示是世界频道，否则不是
	 */
	public boolean isWorldChat()
	{
		return GroupEntity.isWorldChat(this.g_id);
	}
	
	/**
	 * 指定id是否是“世界频道”（或者说是bbs聊天）。
	 * 
	 * @param gid 群id
	 * @return true表示是世界频道，否则不是
	 */
	public static boolean isWorldChat(String gid)
	{
		return GroupEntity.DEFAULT_GROUP_ID_FOR_BBS.equals(gid);
	}
	
}
